package Interfaces;

import java.awt.Dimension;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import Modelo.CalculoMedSom;
import Modelo.Modelo;

public class InterfaceSomatorio extends JPanel {
	
	private static final long serialVersionUID = 1L;
	private JLabel numeroValores, imgSomatorio;
	private TextField valorVariavel;
	private JButton botaoCalcular, botaoInsereValor;
	private ImageIcon iconeMedia;
	private Modelo _modelo;
	private CalculoMedSom somatorio;
	private InterfaceSomatorio _this;
	
	
	public InterfaceSomatorio(Modelo modelo){
		somatorio = new CalculoMedSom();
		_this = this;
		_modelo = modelo;
		_modelo.setInterfaceSomatorio(this);
		setSize(_modelo.getInterfacePrincipal().getSize());
		InicilizaComponents();
		addComponents();
		addListeners();
	}
	
	
	private void addComponents() {

		this.add(imgSomatorio);
		this.add(numeroValores);
		this.add(botaoCalcular);
		this.add(valorVariavel);
		this.add(botaoInsereValor);
		
		
		Dimension dd = new Dimension(320, 20);
		numeroValores.setSize(dd);
		numeroValores.setPreferredSize(dd);
		numeroValores.setMaximumSize(dd);
		numeroValores.setMinimumSize(dd);
		Dimension d = new Dimension(252, 20);
		valorVariavel.setSize(d);
		valorVariavel.setPreferredSize(d);
		valorVariavel.setMaximumSize(d);
		valorVariavel.setMinimumSize(d);
		Dimension daa = new Dimension(130, 30);
		botaoCalcular.setSize(daa);
		botaoCalcular.setPreferredSize(daa);
		botaoCalcular.setMaximumSize(daa);
		botaoCalcular.setMinimumSize(daa);
		botaoInsereValor.setSize(daa);
		botaoInsereValor.setPreferredSize(daa);
		botaoInsereValor.setMaximumSize(daa);
		botaoInsereValor.setMinimumSize(daa);	
	}
	
	
	private void InicilizaComponents() {
		//imagem
		iconeMedia = new ImageIcon("imagens/somatorio.png");
		imgSomatorio = new JLabel("", iconeMedia, JLabel.CENTER);
		//resto
		numeroValores = new JLabel("Numero de valores já inseridos: " + somatorio.numVariaveis());
		valorVariavel = new TextField("                                          ");
		valorVariavel.setText("");
		botaoCalcular = new JButton("Calcular");
		botaoInsereValor = new JButton("Insere Valor");
	}
	
	
	private void addListeners(){
		botaoInsereValor.addActionListener( new insereVariavelListener() );
		botaoCalcular.addActionListener( new calcularListener() );
	}

	public class insereVariavelListener implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
			try{
				double var = Double.parseDouble(valorVariavel.getText());
				System.out.println("variavel: "+var);
				somatorio.addVariavel(var);
				numeroValores.setText( "Numero de valores já inseridos: " + somatorio.numVariaveis() );
				valorVariavel.setText("");//limpa insercao de variavel
			}
			catch(NumberFormatException ex){
				JOptionPane.showMessageDialog(_this, "Erro na introdução de valores, formato não suportado.\nPor favor, volte a inserir.\n\nDica: Casas decimais são separadas por pontos e não virgulas.", "Erro", JOptionPane.ERROR_MESSAGE);
			}
		}
    }
	public class calcularListener implements ActionListener {
		@Override
		public void actionPerformed(ActionEvent e) {
			JOptionPane.showMessageDialog(_this, "Somatorio = " + somatorio.calculaSomatorio(), "Resultado", JOptionPane.INFORMATION_MESSAGE);//calcula somatorio
			somatorio.limpaVariaveis(); //limpa somatorio
			numeroValores.setText( "Numero de valores já inseridos: " + somatorio.numVariaveis() );
		}
    }
	
	/* ja e utilizado o limpaVariaveis ao carregar em calcula
	 * mas se se quiser limpar a somatorio ao ir pa outra interface pode ser utilizada esta funcao
	 */
	public void resetMedia(){
		somatorio.limpaVariaveis();
	}

}

